Introduction

Interface

Start Menu

Control Panel

Accessories

Hardware

Tweaking Windows 98

Help

Visit the PC Plus WWW site

De-mystifying the 8Gb limit
 
As many users have found, there seems to be a "mystical" limit to how big a hard drive can be used by DOS.   At first glance this limit seems arbitrary and can be frustrating, especially with the sudden glut of 8Gb+ drives on the market.  There is, however, a valid reason behind it.

On most standard IDE drives (SCSI are different but similar rules apply) it is normal to have 16 heads and 63 sectors per track. Cylinders increase as drive size increases. We are seeing drives with as high as 24,000 cylinders or as low as 50.  To figure the drive's capacity, multiply the cylinder, head, and sector numbers together. Divide the product by 2048.  As a formula it looks like this: (cylinders * heads * sectors) / 2048 equals megabytes

This will give you a number in megabytes that is equal to the size of the drive. The system uses these numbers to help it when reading and writing to the disk.

The first limit comes directly from how these numbers relate to the system.  The system BIOS's INT13h interface allows for a maximum of 1024 cylinders, 255 heads, and 63 sectors per track. The standard IDE interface allows for a maximum of 65,536 cylinders, 16 heads, and 63 sectors. In order to satisfy the limits of both of these numbers, the minimum highest common number for each is used.  This produces a maximum number of 1024 cylinders, 16 heads, and 63 sectors (504 MB per the calculation above).

That limit quickly became too restrictive and a work around method was developed.  It is now possible to "translate" a drive by multiplying the number of heads to reduce the number of cylinders. For instance, if I had a drive that was 2046 cylinders, 16 heads, and 63 sectors, I could translate it by halving the number of cylinders and doubling the number of heads.  This results in a drive that has 1023 cylinders, 32 heads, and 63 sectors.

By using a translator between the IDE interface and the BIOS INT13h interface, we can accomplish this translation and satisfy both limits.  My IDE drive will still have the same physical number of cylinders, heads, and sectors that fit within its limits, but the numbers reported to the BIOS INT13h interface will be translated. This changes our limit to 1024 cylinders, 255 heads, and 63 sectors (8Gb per the calculation above) or simply the limits that the BIOS has in the first place.  We are now capable of working with anything up to 8Gb.

There is another place that this limit can be found.  Every partition table in a PC is set up with the same parameters.  An entry for a single partition is 16 bytes long.  Of those 16 bytes, three are dedicated to holding the beginning cylinder, head, and sector of a partition and three are dedicated to holding the end cylinder, head, and sector of a partition.  A single byte can hold a number up to 255.  If this number where strictly adhered to this would leave a limit of 255 cylinders, 255 heads, and 255 sectors.  Of the heads byte, this is true.  The other two bytes are manipulated slightly to allow for different numbers.  The sector number is held in a six digit binary number and the cylinders in a 10 digit binary number. To fit this into the byte structure (remember 8 bits to a byte), the first two digits of the cylinder number are chopped off and put on the front of the sector number. Learning to interpret the numbers can be interesting, but it effectively gives us a limit of 1023 cylinders, 255 heads, and 63 sectors.  Once again 8Gb.

Now, if these limits look so built in, why are we seeing people breaking them?  The answer is logical addressing.  All of these limits are related to the number of cylinders, heads, and sectors that can be handled.   When you start addressing a drive with logical numbers (start counting at the first sector and keep counting until you get to the end), much larger numbers are possible. For instance, the total number of sectors for a partition is stored in four bytes in the partition table.  Four bytes allows partition sizes up to two terabytes.  If we were to always use this number, then the 8Gb limit would be non-existent.

But the limit persists.  This is because all logical addressing is done by operating systems.  Windows 95, Windows NT 4.0, and OS/2 Warp have systems that allow them to address the drive in a logical manner. By doing this, all of these operating systems can break the 8Gb barrier.  DOS and Windows 3.x don't have this ability. They still rely on the traditional cylinder, head, and sector addressing. For this reason any program that runs under these operating systems is also limited to 8Gb unless it has its own system for using logical addressing.
Courtesy of PowerQuest. Originally written by Jeff Rushton, Technical Support for The Partition Magician newsletter.  For more information: http://www.powerquest.com

PowerQuest is committed to breaking the barrier, but want to do so in as safe a manner as possible.  To break through the 8Gb barrier, some PC manufacturers have started including a BIOS extension for access to the disk drive.  All PowerQuest products have built-in support for this BIOS extension.  Unfortunately, many PCs still do not have these extensions, limiting PowerQuest products to 8Gb.  PowerQuest is developing technology to work with these large drives.
Introduction | Top | Help